


package com.endes.android.view.aplicacion;

import com.endes.android.R;
import com.endes.android.context.Aplicacion;
import com.endes.android.context.Preferencias;
import com.endes.android.entidades.Conglomerado;
import com.endes.android.entidades.Entrevistadora;
import com.endes.android.entidades.Supervisora;
import com.endes.android.model.service.ConglomeradoService;
import com.endes.android.model.service.EntrevistadoraService;
import com.endes.android.model.service.SupervisoraService;

import commons.util.android.widget.IntegerSpinner;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class ValoresInicialesActivity 
//extends EndesActivity 
extends Activity
implements View.OnClickListener, OnItemSelectedListener
{		
	private EditText etConglomerado;
	private IntegerSpinner spEntrevistadora;
	private IntegerSpinner spSupervisora;
	private Button btnGuardar;
	
	private TextView tvConglomerado;
	//private TextView tvSupervisora;
	//private TextView tvEntrevistadora;
	
	
	private EntrevistadoraService entrevistadoraService = Aplicacion.getInstance().getAppContext().entrevistadoraService;
	private SupervisoraService supervisoraService = Aplicacion.getInstance().getAppContext().supervisoraService;
	private ConglomeradoService conglomeradoService = Aplicacion.getInstance().getAppContext().conglomeradoService;
		
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        // Display a indeterminate progress bar on title bar
        //requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
 
        this.setContentView(R.layout.app_valores_iniciales);
        
        btnGuardar = (Button) findViewById(R.id.btnGuardar);
        btnGuardar.setOnClickListener(this);
        
        etConglomerado = (EditText) findViewById(R.id.eteConglomerado);
        etConglomerado.setOnKeyListener(new View.OnKeyListener() {
			
			@Override
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				 //if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_DPAD_CENTER)) {
				if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
					int cod = Integer.parseInt(etConglomerado.getText().toString());
					mostrarConglomeradoDetalle(cod);
		            return true;
		        }
				 return false;
			}
		});
        
        spSupervisora = new IntegerSpinner((Spinner) findViewById(R.id.spnSupervisora));
        spSupervisora.setItems(supervisoraService.findItems(), R.layout.spinner_layout);
        spSupervisora.getSpinner().setOnItemSelectedListener(this);
        
        spEntrevistadora = new IntegerSpinner((Spinner) findViewById(R.id.spnEntrevistadora));
        
        
        tvConglomerado = (TextView) findViewById(R.id.tvConglomerado);
        //tvEntrevistadora = (TextView) findViewById(R.id.tvEntrevistadora);
        //tvSupervisora = (TextView) findViewById(R.id.tvSupervisora);
        
        try {
			mostrar();
		} catch (Exception e) {
			Aplicacion.log(e);
		}
        
    }

	
	private void mostrarConglomerado() {
		int cod = Preferencias.getCodigoConglomerado(this);
		
		if(cod>0) {
			/*
			Conglomerado e = conglomeradoService.findByCodigo(cod);
			if(e!=null) {
				this.etConglomerado.setText(cod+"");
			}
			*/				
			this.etConglomerado.setText(cod+"");
		}
		
		mostrarConglomeradoDetalle(cod);
	}
	
	private void mostrarConglomeradoDetalle(int cod) {
		if(cod>0) {
			Conglomerado e = conglomeradoService.findByCodigo(cod);
			String s = null;
			if(e!=null) {
				s = e.getCodigo()+"\n"+e.getUbigeo();
			}
			else {
				s = cod+"\n"+"Conglomerado no encontrado!";
			}
			
			this.tvConglomerado.setText(s);
		}
	}
	
	private void mostrarSupervisora() throws Exception {
		int cod = Preferencias.getCodigoSupervisora(this);
		if(cod>0) {
			Supervisora s = supervisoraService.findByCodigo(cod);
			if(s==null) {			
				Aplicacion.throwException(this, "Supervisora "+cod+" no encontrada");
			}
			
			//this.tvSupervisora.setText(s.getCodigoNombre());
			this.spSupervisora.setValorInt(cod);
			//llenarEntrevistadoras(cod);
		}
	}
	
	private void mostrarEntrevistadora() throws Exception {
        int cod = Preferencias.getCodigoEntrevistadora(this);
		if(cod>0) {
			Entrevistadora e = entrevistadoraService.findByCodigo(cod);
			if(e==null) {			
				Aplicacion.throwException(this, "Entrevistadora "+cod+" no encontrada");
				//Toast.makeText(this.getApplicationContext(), "Entrevistadora "+cod+" no encontrada", Toast.LENGTH_LONG).show();
				//throw new Exception();
			}
			//this.tvEntrevistadora.setText(e.getCodigoNombre());
			this.spEntrevistadora.setValorInt(cod);
		}
	}
	
	private void mostrar() {
		try {			
				
			mostrarConglomerado();			
			mostrarSupervisora();
			//mostrarEntrevistadora();	
					
		} catch (Exception e) {
			Aplicacion.log(e);
		}
	}


	
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btnGuardar:
			
			String cong = etConglomerado.getText().toString();
			if(!cong.isEmpty()) {
				Preferencias.guardarCodigoConglomerado(this, Integer.parseInt(cong));
				mostrarConglomerado();
			}
			
			Integer idInterv = spEntrevistadora.getValorInt();
			if(idInterv>0) {
				Preferencias.guardarCodigoEntrevistadora(this, idInterv);
				//mostrar(Preferencias.INTERV);
			}
			
			Integer idSuperv = spSupervisora.getValorInt();
			if(idSuperv>0) {
				Preferencias.guardarCodigoSupervisora(this, idSuperv);
				//mostrar(Preferencias.SUPERV);
			}
						
			break;
		default:
			break;
		}
		
	}

	

	@Override
	public void onNothingSelected(AdapterView<?> parent) {

	}
	
	@Override
	public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
		
		switch (parent.getId()) {
		case R.id.spnSupervisora:
			Integer idSuperv = spSupervisora.getValorInt();
			try {
				llenarEntrevistadoras(idSuperv);
			}
			catch(Exception e) {
				Aplicacion.log(e);
			}
			break;
		default:
			break;
		}
	}

	private void llenarEntrevistadoras(Integer idSuperv) throws Exception {        
        spEntrevistadora.setItems(entrevistadoraService.findItemsByCodigoSupervisora(idSuperv), R.layout.spinner_layout);        
        this.mostrarEntrevistadora();
	}

}